import 'dart:io';

import 'package:path_provider/path_provider.dart';

class CacheManager {
  /**
   * 清楚缓存
   */
  static clearCache() async {
    try {
      //临时目录: 系统可随时清除的临时目录（缓存）
      Directory tempDir = await getCachePath();
      //列出所有文件，不包括链接和子文件夹
      Stream<FileSystemEntity> entityList =
          tempDir.list(recursive: true, followLinks: true);
      await for (FileSystemEntity entity in entityList) {
        //文件、目录和链接都继承自FileSystemEntity
        //FileSystemEntity.type静态函数返回值为FileSystemEntityType
        //FileSystemEntityType有三个常量：
        //Directory、FILE、LINK、NOT_FOUND
        //FileSystemEntity.isFile .isLink .isDerectory可用于判断类型
        if (entity == FileSystemEntity.isFile) entity.delete(recursive: true);
      }
      return true;
    } catch (e) {
      return false;
    }
  }

  static getCachePath() async {
    //临时目录: 系统可随时清除的临时目录（缓存）
    Directory tempDir = await getTemporaryDirectory();
    String tempDirPath = tempDir.path;
    return tempDir;
  }

  static getDocumentsDirectory() async {
    //文档目录: 应用程序的目录，用于存储只有自己可以访问的文件
    Directory appDocDir = await getApplicationDocumentsDirectory();
    String appDocPath = appDocDir.path;
    return appDocDir;
  }
}
